// #ifdef H5
import wxSDK from 'jweixin-module'
import {wxSign} from '@/api/common/index.js'
import {errorIcon} from '@/script/attention.js'
			
// 需要调用的微信api列表
export const WXAPI = [
  'updateAppMessageShareData',
  'updateTimelineShareData',
  'onMenuShareAppMessage',
  'scanQRCode', 
  'getLocation'
]
// 微信分享朋友默认配置
const shareOptionsDefalut = {
  title: '这是标题', // 分享标题
  desc: '这是描述', // 分享描述
  imgUrl: '图片地址', // 封面图
}

let query = {}

export default { 
  /**
   * 判断是否在微信中
   */
  isWechat() {
		let ua = window.navigator.userAgent.toLowerCase();
		if (ua.match(/micromessenger/i) == 'micromessenger') {
			return true;
		} else {
			return false;
		}
  },
  /**
   * 通过config接口注入权限验证配置
   * @param {Object} cb 需要执行的函数
   */
  getWxConfig() {
		return new Promise((resolve, reject) => {
			// 调用分享接口
			wxSign({url: encodeURIComponent(location.href)}).then(res => {
				let {appId, noncestr, signature, timestamp} = res.data
				// wxSDK.config({
				// 	debug: false, // 是否开启调试模式
				// 	appId: 'wxa60cb5358289e03b', // 必填，公众号的唯一标识
				// 	timestamp: '1699939235', // 必填，生成签名的时间戳
				// 	nonceStr: 'f638e76a-787f-4f0a-a6c4-636ac052fdfc', // 必填，生成签名的随机串
				// 	signature: '6690493ccbfa7e6896adc475cd251b2b1c7526a7', // 必填，签名
				// 	jsApiList: WXAPI
				// })
				wxSDK.config({
					debug: false, // 是否开启调试模式
					appId: appId, // 必填，公众号的唯一标识
					timestamp: timestamp, // 必填，生成签名的时间戳
					nonceStr: noncestr, // 必填，生成签名的随机串
					signature: signature, // 必填，签名
					jsApiList: WXAPI
				})
				query = {
					debug: false, // 是否开启调试模式
					appId: appId, // 必填，公众号的唯一标识
					timestamp: timestamp, // 必填，生成签名的时间戳
					nonceStr: noncestr, // 必填，生成签名的随机串
					signature: signature, // 必填，签名
					jsApiList: WXAPI
				}
				resolve(true)
			})
		})		
  },

  /**
   * 唤起微信分享
   * @param {Object} sharedata 分享需要的参数
   * @param {Object} cb 成功回调
   * @param {Object} errorCb 失败回调
   */
  callWexinShare(sharedata = shareOptionsDefalut, cb = ()=>{}, errorCb = ()=>{}) {
		this.getWxConfig().then(boo => {
			wxSDK.ready(()=>{
				console.log('---config注入成功---，开始使用sdk接口')
				// 自定义“分享给朋友”及“分享到QQ”按钮的分享内容
				wxSDK.updateAppMessageShareData({
					title: sharedata.title || shareOptionsDefalut.title,
					desc: sharedata.desc || shareOptionsDefalut.desc,
					// 微信对分享图有限制，具体看踩坑
					imgUrl: (sharedata.imgUrl || shareOptionsDefalut.imgUrl) + '?x-oss-process=image/resize,w_120,m_lfit/format,png/quality,q_80',
					link: window.location.href,
					success:(res)=>{
						cb(res)
					},
					cancel:(cancelMsg)=>{
						errorCb(cancelMsg)
					}
				})
				// 自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容
				wxSDK.updateTimelineShareData({
					title: sharedata.title || shareOptionsDefalut.title,
					imgUrl: (sharedata.imgUrl || shareOptionsDefalut.imgUrl) + '?x-oss-process=image/resize,w_120,m_lfit/format,png/quality,q_80',
					link: window.location.href,
					success:(res)=>{
						cb(res)
					},
					cancel:(cancelMsg)=>{
						errorCb(cancelMsg)
					}
				})
			});
			wxSDK.error((res)=>{
				console.log('---注入失败，查看失败原因---',res)
			});
		})
  },
	/**
	 * 唤起地理位置
	 * @param {Object} cb 成功回调
	 * @param {Object} errorCb 失败回调
	 */
	callLocation(cb = ()=>{}, errorCb = ()=>{}) {
		this.getWxConfig().then(boo => {
			wxSDK.ready(()=>{
				console.log('---config注入成功---，开始使用sdk接口')
				wxSDK.getLocation({
					type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
					success: function (res) {
						var latitude = res.latitude; // 纬度，浮点数，范围为90 ~ -90
						var longitude = res.longitude; // 经度，浮点数，范围为180 ~ -180。
						var speed = res.speed; // 速度，以米/每秒计
						var accuracy = res.accuracy; // 位置精度
						cb(res)
					}
				})
			});
			wxSDK.error((res)=>{
				errorCb(res.errMsg, query)
				// console.log('---注入失败，查看失败原因---',res)
			});
		})
	},
	/**
	 * 调起微信扫一扫接口
	 * @param {Object} cb 成功回调
	 * @param {Object} errorCb 失败回调
	 */
	callScanQRCode(cb = ()=>{}, errorCb = ()=>{}) {
		this.getWxConfig().then(boo => {
			wxSDK.ready(()=>{
				console.log('---config注入成功---，开始使用sdk接口')
				wxSDK.scanQRCode({
					needResult: 0, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
					scanType: ["qrCode"], // 可以指定扫二维码还是一维码，默认二者都有
					success: function (res) {
						var result = res.resultStr; // 当needResult 为 1 时，扫码返回的结果
						cb()
					}
				})
			});
			wxSDK.error((res)=>{
				errorCb(res.errMsg, query)
				console.log('---注入失败，查看失败原因---',res)
			});
		})
	}
}
// #endif
